CLCK 08: Мониторинг ноды ClickHouse

Описание:

В предыдущих практикумах мы работали над установкой и настройкой ClickHouse ноды, но как отслеживать её состояние и работоспособность? По факту мы научились только сохранять серверные логи, а так же профилировать и трейсить сами запросы. Но нам точно необходимо видеть основные метрики в графане для отслеживания состояния сервера.

И для этого ClickHouse поддерживает сбор метрик о том, как сервер использует вычислительные ресурсы, общую статистику обработки запросов, а также имеет настройки для интеграцией с такими системами мониторинга, как Prometheus или Graphite.

Метрики

ClickHouse хранит свои метрики в системных таблицах, которые и будут использоваться системами мониторинга. Их можно посмотреть в следующих системных таблицах:

Кстати, настраиваются они в стандартом конфигурационном файле сервера и имеют следующий вид:

 <!-- Metric log contains rows with current values of ProfileEvents, CurrentMetrics collected with "collect_interval_milliseconds" interval. -->
 <metric_log>
 <database>system</database>
 <table>metric_log</table>
 <flush_interval_milliseconds>7500</flush_interval_milliseconds>
 <collect_interval_milliseconds>1000</collect_interval_milliseconds>
 </metric_log>
 <!--
 Asynchronous metric log contains values of metrics from
 system.asynchronous_metrics.
 -->
 <asynchronous_metric_log>
 <database>system</database>
 <table>asynchronous_metric_log</table>
 <!--
 Asynchronous metrics are updated once a minute, so there is
 no need to flush more often.
 -->
 <flush_interval_milliseconds>60000</flush_interval_milliseconds>
 </asynchronous_metric_log>

Здесь так же указывается база и таблица, в которую необходимо записывать все серверные метрики.

Использование систем мониторинга

ClickHouse поддерживает экспорт метрик в такие системы мониторинга, как Graphite и Prometheus. В их параметрах флагами true/false можно задать метрики для экспорта:

<yandex>
<graphite>
 <host>localhost</host>
 <port>42000</port>
 <timeout>0.1</timeout>
 <interval>1</interval>
 <root_path>one_sec</root_path>
 <metrics>true</metrics>
 <events>true</events>
 <events_cumulative>false</events_cumulative>
 <asynchronous_metrics>false</asynchronous_metrics>
</graphite>
<prometheus>
 <endpoint>/metrics</endpoint>
 <port>9363</port>
 <metrics>true</metrics>
 <events>true</events>
 <asynchronous_metrics>true</asynchronous_metrics>
 <status_info>true</status_info>
</prometheus>
</yandex>

В настройках Graphite:

В настройках Prometheus:

На саммом деле для их включения всего лишь достаточно раскомментировать соответствующую секцию в конфигурационном файле - все настройки по умолчанию вполне валидны для продакшен среды.

Проверка доступности сервера

Как мы уже обсуждали ранее - можно проверить доступность ClickHouse сервера отправив ему GET запрос /ping на HTTP API. Если сервер доступен - он ответит 200 OK.

Дашбоард в графане

К сожалению, в данном практикуме мы не разбираем графану от слова совсем. Но если она у вас установлена и настроена, то вы можете найти готовые дашбоарды на grafana.net и импортировать готовый дашбоард, например такой. Схема будет выглядеть достаточно просто - включаем прометеус мониторинг в кликхаусе, настраиваем прометеус на сбор метрик с кликхауса и импортируем дашбоард в графану. Все! Можно наслаждаться графиками :)

Полезные ссылки:

Задание. Правила:

  1. После нажатия кнопки «Начать выполнение» для вас будет подготовлено окружение и предоставлены необходимые доступы.
  2. Также вам будут выданы переменные (если они будут нужны), которые в задании указаны в фигурных скобках, — их надо будет подставить при выполнении задания.
  3. После выполнения всех пунктов задания нажмите кнопку «Отправить на проверку», и в течение ближайших 3-5 минут скрипт проверит выполнение всех условий и выставит вам оценку.
  4. В случае, если вы что-то забыли, можно исправить ошибки и отправить на проверку повторно.
  5. Также, если вы успешно сдали задание, но у вас остались вопросы — вы всегда сможете задать их куратору после проверки или в чате в любое удобное для вас время.

Задание:

  1. Установите clickhouse на сервер из официальных репозиториев.
  2. Все изменения вносите в конфигурационный файл config.xml сервера.
  3. Откройте порт 9363 для Prometheus в конфигурации ClickHouse.
  4. Укажите только таблицы metrics и events для сбора метрик.
  5. Проверьте через curl, что ClickHouse теперь отдает метрики по указанному порту и эндпоинту.
  6. Отправляйте задание на проверку.